package com.hspedu.seckill.utils;

import org.apache.commons.codec.digest.DigestUtils;

/**
 * @author: xujiabing
 * @date: 2024-10-02 18:43
 * @description md5工具类，生成密码
 */
public class MD5Util {
    //盐值[第一次前端加密盐值]
    private static final String SALT = "4tIY5VcX";

    /**
     * md5加密
     * @param src
     * @return
     */
    public static String md5(String src) {
        return DigestUtils.md5Hex(src);
    }

    /**
     * 第一次加密加盐, 完成的是md5(pass+salt1)
     * @param inputPass
     * @return
     */
    public static String inputPassToMidPass(String inputPass) {
        //可以自己设计
        String str = SALT.charAt(0) + inputPass + SALT.charAt(6);
        return md5(str);
    }

    /**
     * 这个盐随机生成, 完成的是md5（ md5（pass+salt1）+salt2）
     * @param midPass
     * @param salt
     * @return
     */
    public static String midPassToDBPass(String midPass, String salt) {
        //中间密码加盐，再次MD5 => 数据库存放密码
        String str = salt.charAt(1) + midPass + salt.charAt(5);
        return md5(str);
    }

    /**
     * 进行两次加密加盐最后存到数据库的md5（ md5（pass+salt1）+salt2）
     * 直接将明文 => 数据库存放密码
     */
    public static String inputPassToDBPass(String inputPass, String salt) {
        //生成中间密码
        String midPass = inputPassToMidPass(inputPass);
        //生成数据库密码
        return midPassToDBPass(midPass, salt);
    }

    public static void main(String[] args) {
        System.out.println(inputPassToDBPass("12345","GfBiQk1x"));
    }
}
